import java.util.Scanner;
public class Main {
    /*有一个书店老板，他的书店开了 n 分钟。每分钟都有一些顾客进入这家商店。给定一个长度为 n 的整数数组 customers ，
    其中 customers[i] 是在第 i 分钟开始时进入商店的顾客数量，所有这些顾客在第 i 分钟结束后离开。
    在某些分钟内，书店老板会生气。 如果书店老板在第 i 分钟生气，那么 grumpy[i] = 1，否则 grumpy[i] = 0。
    当书店老板生气时，那一分钟的顾客就会不满意，若老板不生气则顾客是满意的。
    书店老板知道一个秘密技巧，能抑制自己的情绪，可以让自己连续 minutes 分钟不生气，但却只能使用一次。
    请你返回 这一天营业下来，最多有多少客户能够感到满意 。*/
    public static int countcustomers(int[] customers,int[] grumpy,int minutes) {
        int[] arr=new int[2];//grumpy的值只有1和0，可以用数组计算，生气和不生气的总人数
        int result=0;
        for(int i=0;i<customers.length;i++) {
            //进入窗口，分别计算1和0的人数
            arr[grumpy[i]]+=customers[i];
            if(i<minutes-1)continue;
            //更新结果
            result=Math.max(result,arr[1]);
            //如果i-minutes+1对于的下标为0，则不生气忽略，为1则减去移除值
            arr[1]-=grumpy[i-minutes+1]==1?customers[i-minutes+1]:0;
        }
        return result+arr[0];
    }
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[]customers=new int[n];
        for(int i=0;i<n;i++){
            customers[i]=sc.nextInt();
        }
        int[]grumpy=new int[n];
        for(int i=0;i<n;i++){
            grumpy[i]=sc.nextInt();
        }
        int minutes=sc.nextInt();
        int result=countcustomers(customers,grumpy,minutes);
        System.out.println(result);
        sc.close();
    }
}